

# 关于 __all__ 变量的重要说明:
# 1. __all__ 是一个特殊的变量，用于定义模块的公共接口
# 2. 它是一个字符串列表，包含了使用 "from module import *" 时应该导入的变量名
# 3. 如果没有定义 __all__，使用 "from module import *" 会导入模块中所有不以下划线开头的变量
# 4. 定义 __all__ 可以明确指定模块的公共API，隐藏内部实现细节
__all__ = ['add', 'multiply']  # 控制使用 from my_moudle import * 时导入的内容

# 自定义模块文件 my_moudle.py
# 该模块提供基本的数学运算功能

def add(a, b):
    """加法函数
    参数:
        a (int/float): 第一个加数
        b (int/float): 第二个加数
    返回:
        int/float: 两个数的和
    """
    return a+b


def multiply(a, b):
    """乘法函数
    参数:
        a (int/float): 第一个乘数
        b (int/float): 第二个乘数
    返回:
        int/float: 两个数的积
    """
    return a*b


def _private_function():
    """私有函数示例，仅供模块内部使用"""
    return "这是模块内部使用的函数"


# 演示 __name__ 变量的使用
def demo_name_variable():
    """演示 __name__ 变量的使用"""
    print(f"模块 {__name__} 被导入")
    print(f"当前模块的 __name__ 值为: {__name__}")


# 关于 __name__ 变量的重要说明:
# 1. __name__ 是Python的内置变量，不是 __main__
# 2. 当模块被直接执行时，__name__ 的值为 "__main__"
# 3. 当模块被导入时，__name__ 的值为模块名(如 "my_moudle")



# 模块测试代码
# 在Python中，__name__ 是一个内置变量，它根据模块的运行方式具有不同的值：
# 当一个Python文件被直接运行时，__name__ 的值会被设置为 "__main__"
# 当一个Python文件被作为模块导入到其他文件中时，__name__ 的值会被设置为该模块的名
if __name__ == '__main__':
    print("=" * 50)
    print("模块被直接运行")
    print(f"当前模块的 __name__ 值为: {__name__}")
    print("=" * 50)
    
    # 测试函数
    result1 = add(2, 3)
    print(f"add(2, 3) = {result1}")
    
    result2 = multiply(4, 5)
    print(f"multiply(4, 5) = {result2}")
    
    print(_private_function())
else:
    # 当模块被导入时执行
    demo_name_variable()